package bancosys.tec.persist.authorization.annotation;

/**
 * @author Marcio Ribeiro
 * @date Apr 21, 2008
 */
public enum Type {
    /** Tipo sera inferido a partir de valor de retorno de metodo. */
    INFER,

    /** Percentagem. */
    PERCENTAGE,

    /** Valor monetario. */
    CURRENCY,

    /** Inteiro com separador de agrupamento (milhar). */
    INTEGER_GROUPED,

    /** Tipo {@link Boolean}, mostrando Sim ou Não */
    BOOLEAN;

    /**
     * @return <code>true</code> se deveria inferir tipo de dado, <code>false</code> se nao.
     */
    public boolean shouldInfer() {
        return this.equals(INFER);
    }

    /**
     * @return <code>true</code> se tipo de dado for percentagem, <code>false</code> se nao.
     */
    public boolean isPercentage() {
        return this.equals(PERCENTAGE);
    }

    /**
     * @return <code>true</code> se tipo de dado for monetario, <code>false</code> se nao.
     */
    public boolean isCurrency() {
        return this.equals(CURRENCY);
    }

    /**
     * @return <code>true</code> se tipo de dado for inteiro que deve ser formatado com agrupamento (separador de milhar),
     * <code>false</code> se nao.
     */
    public boolean isIntegerGrouped() {
        return this.equals(INTEGER_GROUPED);
    }

    /**
     * @return <code>true</code> se tipo de dado for booleano que deve ser formatado com <i>Sim</i> ou <i>Não</i>, <code>false</code> se
     * nao.
     */
    public boolean isBoolean() {
        return this.equals(BOOLEAN);
    }
}
